<?php
class content_form {
	var $modelid;//模型id  1-文章模型 2-图片模型 3-下载模型  ，不同的模型在添加内容时会动态生成不同的表单
	var $fields;//所有模型字段信息
	var $id;
	var $formValidator;//表单验证

    function __construct($modelid,$catid = 0,$categorys = array()) {
		$this->modelid = $modelid;
		$this->catid = $catid;
		$this->categorys = $categorys;
		$this->fields = getcache('model_field_'.$modelid,'model');//此缓存文件主要用来缓存模型字段信息
		$this->siteid = get_siteid();
    }

//此方法主要用来获取所有动态生成好的表单，以便于在前台循环显示
	function get($data = array()) {
		$_groupid = param::get_cookie('_groupid');
		$this->data = $data;
		if(isset($data['id'])) $this->id = $data['id'];
		$info = array();
		$this->content_url = $data['url'];
		/**
             * $this->fields:主要存放从model_field_模型id.cache.php文件中获取过来的所有模型字段信息
             * $field:单个模型字段信息
             */
		foreach($this->fields as $field=>$v) {
			if(defined('IN_ADMIN')) {
				if($v['iscore'] || check_in($_SESSION['roleid'], $v['unsetroleids'])) continue;
			} else {
				if($v['iscore'] || !$v['isadd'] || check_in($_groupid, $v['unsetgroupids'])) continue;
			}

			 /**
                 * 表单类型:formtype
                 * 对应   后台->模型管理->字段管理->类型
                 * 对应  content_form.class.php文件中方法的名称
                 * 对应  caches/caches_model/caches_data/model_field_模型id.cache.php文件中键名
                 * 注意：通过 后台->模型管理->字段管理->添加字段   ，添加的新字段都将被缓存到model_field_模型id.cache.php文件中
                 */
			$func = $v['formtype'];//表单类型
			$value = isset($data[$field]) ? new_html_special_chars($data[$field]) : '';//表单值
			if($func=='pages' && isset($data['maxcharperpage'])) {
				$value = $data['paginationtype'].'|'.$data['maxcharperpage'];
			}
			if(!method_exists($this, $func)) continue;
			 /**
                 * 1.$func:假设模型字段名称为text，则会调用$this->text()方法
                 * 2.$this->text()方法会生成并返回一个text类型的表单，如：<input type="text" name="info['keywords']" value="">
                 * 3.后面程序会将生成的表单放到$info[][]二维数组中，前台只需要循环此数组即可将网页所有的表单都呈现出来
                 */
			$form = $this->$func($field, $value, $v);
			//默认情况下此常量已经被定义了
			if($form !== false) {
				if(defined('IN_ADMIN')) {
					//基本信息字段：基本信息字段将在添加页面左侧显示
					if($v['isbase']) {
						//添加内容页面：左侧部分的表单名称
						$star = $v['minlength'] || $v['pattern'] ? 1 : 0;
						$info['base'][$field] = array('name'=>$v['name'], 'tips'=>$v['tips'], 'form'=>$form, 'star'=>$star,'isomnipotent'=>$v['isomnipotent'],'formtype'=>$v['formtype']);
					} else {
						 //添加内容页面：右侧部分的表单名称
						$star = $v['minlength'] || $v['pattern'] ? 1 : 0;
						$info['senior'][$field] = array('name'=>$v['name'], 'tips'=>$v['tips'], 'form'=>$form, 'star'=>$star,'isomnipotent'=>$v['isomnipotent'],'formtype'=>$v['formtype']);
					}
				} else {
					$star = $v['minlength'] || $v['pattern'] ? 1 : 0;
					$info[$field] = array('name'=>$v['name'], 'tips'=>$v['tips'], 'form'=>$form, 'star'=>$star,'isomnipotent'=>$v['isomnipotent'],'formtype'=>$v['formtype']);
				}
			}
		}
		return $info;
	}
}?>